package cn.gs;

/**
 *
 * // 持久层（数据库操作）
 * @Repository // 您的 DAO 类当前使用的
 * public class UserDaoImpl {}
 *
 * // 服务层（业务逻辑）
 * @Service
 * public class UserServiceImpl {}
 *
 * // 控制层（MVC 控制器）
 * @Controller
 * public class UserController {}
 *
 * // 通用组件（无法归类时使用）
 * @Component
 * public class SomeUtil {}
 *
 * // 配置类（替代 XML 配置）
 * @Configuration
 * public class AppConfig {}
 *
 * 共同特点：
 * 都会被组件扫描识别为 Bean
 * 都可以通过 @Autowired 注入
 * 都派生自 @Component 注解
 *
 * 区别：
 * | 注解 | 层级定位 | 特殊功能 | 典型应用场景 |
 * |---------------|-----------------------|----------------------------|---------------------|
 * | @Repository    | 持久层 (DAO 层)       | 异常转换                  | 数据库操作类 |
 * | @Service       | 服务层 (Service 层)   | 无特殊功能，纯语义标识       | 业务逻辑类 |
 * | @Controller    | 控制层 (Web 层)       | 处理 HTTP 请求            | MVC 控制器 |
 * | @Component     | 通用层               | 无特殊功能                 | 工具类、辅助类 |
 * | @Configuration | 配置层               | 定义配置 Bean                | 替代 XML 的配置类 |
 *
 * 使用建议：根据类的实际作用选择对应注解，这能让代码：
 * 更易理解层级结构
 * 方便进行 AOP 切面配置
 * 有利于统一异常处理
 * 提升代码可维护性
 * **/